105ce7ad39191561b75f51504242877f0059e6f3,zk/src/org/zkoss/zk/ui/impl/UiEngineImpl.java,UiEngineImpl,execNewPage0,#Execution#PageDefinition#Richlet#Page#Writer#,264

Before Change


					pagedef.init(page, !uv.isEverAsyncUpdate() && !uv.isAborting());
					if (!uv.isAborting() && !exec.isVoided())
						execCreate(
							((WebAppCtrl)_wapp).getUiFactory(),
							exec, page, pagedef, null);
					inits.doAfterCompose(page);
				} catch(Throwable ex) {
					inits.doCatch(ex);

After Change


	}
	/** It assumes exactly one of pagedef and richlet is not null.
	 */
	public void execNewPage0(final Execution exec, final PageDefinition pagedef,
	final Richlet richlet, final Page page, final Writer out) throws IOException {
		//Update the device type first. If this is the second page and not
		//belonging to the same device type, an exception is thrown
		final Desktop desktop = exec.getDesktop();
		final LanguageDefinition langdef = //default page
			pagedef != null ? pagedef.getLanguageDefinition():
			richlet != null ? richlet.getLanguageDefinition(): null;
		if (langdef != null)
			desktop.setDeviceType(langdef.getDeviceType()); //set and check!

		//It is possible this method is invoked when processing other exec
		final Execution oldexec = Executions.getCurrent();
		final ExecutionCtrl oldexecCtrl = (ExecutionCtrl)oldexec;
		final UiVisualizer olduv =
			oldexecCtrl != null ? (UiVisualizer)oldexecCtrl.getVisualizer(): null;

		final UiVisualizer uv;
		if (olduv != null) uv = doReactivate(exec, olduv);
		else uv = doActivate(exec, null, false);

		final ExecutionCtrl execCtrl = (ExecutionCtrl)exec;
		final Page old = execCtrl.getCurrentPage();
		final PageDefinition olddef = execCtrl.getCurrentPageDefinition();
		execCtrl.setCurrentPage(page);
		execCtrl.setCurrentPageDefinition(pagedef);

		final Configuration config = _wapp.getConfiguration();
		boolean cleaned = false;
		try {
			config.invokeExecutionInits(exec, oldexec);

			if (olduv != null) {
				final Component owner = olduv.getOwner();
				if (owner != null) {
					((PageCtrl)page).setOwner(owner);
//					if (D.ON && log.finerable()) log.finer("Set owner of "+page+" to "+owner);
				}
			}

			//Cycle 1: Creates all components

			//Note:
			//1) stylesheet, tablib are inited in Page's contructor
			//2) we add variable resolvers before init because
			//init's zscirpt might depend on it.
			if (pagedef != null) {
				page.addFunctionMapper(pagedef.getFunctionMapper());
				initVariableResolvers(pagedef, page);

				final Initiators inits = Initiators.doInit(pagedef, page);
				try {
					//Request 1472813: sendRedirect in init; test: sendRedirectNow.zul
					pagedef.init(page, !uv.isEverAsyncUpdate() && !uv.isAborting());
					if (!uv.isAborting() && !exec.isVoided())
						execCreate(
							new CreateInfo(
								((WebAppCtrl)_wapp).getUiFactory(),
								exec, page),
							pagedef, null);
					inits.doAfterCompose(page);
				} catch(Throwable ex) {